home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Documents / NeXTAnswers / dsp.453 < prev    next >
Text File  |  1992-02-06  |  3KB  |  65 lines

  1. {\rtf0\ansi{\fonttbl\f3\fswiss Helvetica;\f2\fmodern Courier;\f0\fnil Times-Roman;}
  2. \paperw12460
  3. \paperh9000
  4. \margl120
  5. \margr120
  6. \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\tx5860\tx6400\tx6920\tx7460\tx8000\tx8540\f3\b0\i0\ul0\fs24 music dsp array library undefined symbols \
  7.  \
  8. Q:  If I use Music Kit  classes (or array processing functions) in my program,  I get  messages like\
  9. \
  10.  
  11. \f2  Undefined symbols:  \
  12.     .objc_class_name_Score\
  13. \
  14.  
  15. \f3 when I try to 
  16. \b make
  17. \b0  it.
  18. \f2    \
  19. \
  20. \
  21.  
  22. \f3 A:  Make sure you're loading the necessary music- or DSP-related libraries, and in the correct order.  If you look at the Makefile that Interface Builder generates, you'll see a line saying something like:\
  23. \
  24.  
  25. \f2     LIBS = -lNeXT_s -lsys_s
  26. \f3 \
  27. \
  28. These two libraries are sufficient for many NeXT applications, but if you want to use the Music Kit or other DSP-related features, you'll need to specify some additional libraries.  (This won't be necessary for the Sound Kit.)  The procedure for specifying these libraries differs between release 1.0 and release 2.0.\
  29. \
  30.  
  31. \b In version 2.0:
  32. \b0 \
  33. Select "Other libs" in the Project inspector, and click on "Add..."  Add /usr/lib/libdsp_s.a and /usr/lib/libmusic_s.a.  If you need to use MIDI, add /usr/lib/libmidi.a.  Interface Builder will list these libraries, sorted alphabetically. Then change their order to be "libmusic_s libmidi libdsp_s" by control-dragging the library names in the Project Inspector's browser.  (For array processing, use libarrayproc.a and libdsp_s.) \
  34. \
  35.  
  36. \b In version 1.0:
  37. \b0 \
  38. Interface Builder doesn't support other libraries. Instead, create a file called Makefile.preamble in your source directory, consisting of the line\
  39. \
  40.  
  41. \f2 OTHER_LIBS = -lsynthpatches -lunitgenerators -lmusickit -ldsp_s -lmidi -larrayproc  
  42. \f3 \
  43. \
  44. In the Makefile that Interface Builder generates, you'll also notice a line saying\
  45. \
  46.  
  47. \f2 -include Makefile.preamble
  48. \f3 \
  49. \
  50. This will read in that file, supplementing the information in the first LIBS line earlier in the Makefile.  (If your Makefile.preamble said "LIBS" instead of "OTHER_LIBS", it would override the earlier LIBS line.)  You generally won't need all the additional libraries; determine  which ones you can omit by logic or by trial and error.\
  51. \
  52. Note that the 2.0 "music" library unites the three separate1.0 libraries "musickit," "synthpatches," and "unitgenerators." \
  53. \
  54.  
  55. \pard See also NextAnswer ib.269.
  56. \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\tx5860\tx6400\tx6920\tx7460\tx8000\tx8540             \
  57. QA453\
  58. \
  59.  
  60. \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\f0\fs28 Valid for 1.0\
  61. Valid for 2.0\
  62.  
  63. \pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320\tx5860\tx6400\tx6920\tx7460\tx8000\tx8540\f3\fs24 \
  64.  
  65.